home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / src890906.arc / LCSUM.C < prev    next >
C/C++ Source or Header  |  1989-08-07  |  775b  |  30 lines

  1. #if    (defined(MPU8086) || defined(MPU8080) || defined(vax))
  2. #define    LITTLE_ENDIAN    /* Low order bytes are first in memory */
  3. #endif            /* Almost all other machines are big-endian */
  4. #include "global.h"
  5. #include "ip.h"
  6.  
  7. /*
  8.  * Word aligned linear buffer checksum routine.  Called from mbuf checksum
  9.  * routine with simple args.  Intent is that this routine may be replaced
  10.  * by assembly language routine for speed if so desired.
  11.  */
  12. int16
  13. lcsum(wp,len)
  14. register int16 *wp;
  15. register int16 len;
  16. {
  17.     register int32 sum = 0;
  18.     int16 result;
  19.  
  20.     while(len-- != 0)
  21.         sum += *wp++;
  22.     result = eac(sum);
  23. #ifdef    LITTLE_ENDIAN
  24.     /* Swap the result because of the (char *) to (int *) type punning */
  25.     result = (result << 8) | (result >> 8);
  26. #endif
  27.     return result;
  28. }
  29.  
  30.